# Spring推荐的Liberica Open JDK https://bell-sw.com/pages/downloads/
# bellsoft/liberica-openjdk-debian:17.0.13-cds
FROM bellsoft/liberica-openjdk-debian:21.0.5-cds

# 添加镜像维护者信息
LABEL maintainer="MoNaiHui"

# 设置时区和 JVM 的自定义配置选项
ENV TZ=Asia/Shanghai \
    JAVA_XMS="-Xms256m" \
    JAVA_XMX="-Xmx512m" \
    JAVA_GC="-XX:+UseG1GC" \
    JAVA_EGD="-Djava.security.egd=file:/dev/./urandom" \
    SERVER_PORT=8081

# 设置工作目录为 /apex
WORKDIR /apex

# 复制目标目录下的应用程序 JAR 文件到容器中的 /app 目录
COPY ./target/apex-system.jar /apex/app.jar

# 暴露容器的端口
EXPOSE ${SERVER_PORT}

# 启动应用程序
CMD ["sh", "-c", "java ${JAVA_XMS} ${JAVA_XMX} ${JAVA_GC} ${JAVA_EGD} -jar /apex/app.jar"]

# 添加健康检查 需要已经集成Spring Actuator 如果没有，请注释下列命令
# HEALTHCHECK 指令用于指定容器的健康检查方式
# --interval=30s：每隔 30 秒执行一次健康检查
# --timeout=10s：健康检查的超时时间为 10 秒，如果检查超时将被视为失败
# --start-period=10s：容器启动后的 10 秒内不进行健康检查，以允许应用程序启动
# --retries=3：健康检查失败的重试次数，如果连续 3 次失败，则容器将被标记为不健康
HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \
  CMD ["sh", "-c", "curl -f http://localhost:${SERVER_PORT}/actuator/health || exit 1"]

